# 导入ROS2核心库和父类PersonNode
import rclpy
from rclpy.node import Node
# 注意：如果person_node和writer.py在同一目录，用相对导入；否则用包名+模块名
from demo_python_pkg.person_node import PersonNode  

class WriterNode(PersonNode):
    def __init__(self, node_name: str, name: str, age: int, book: str) -> None:
        # 调用父类(PersonNode)的构造函数初始化节点名、姓名、年龄
        super().__init__(node_name, name, age)  
        self.book = book  # 新增属性：作家的书籍名
        self.get_logger().info(f"WriterNode初始化完成：作家={self.name}，年龄={self.age}，书籍={self.book}")

    def write(self):
        # 使用ROS2标准日志（替代print，便于日志管理）
        self.get_logger().info(f"作家 {self.name} 创作了《{self.book}》")

def main(args=None):
    # 1. 初始化rclpy（ROS2节点必需）
    rclpy.init(args=args)
    
    # 2. 创建WriterNode实例（参数：ROS2节点名、作家姓名、年龄、书籍名）
    node = WriterNode(
        node_name="writer_node",
        name="zhangsan",  # 修正zhangsna拼写
        age=66,
        book="the sun shines the lord"  # 修正loard+补充语法（shines）
    )
    
    # 3. 调用父类的eat方法 + 子类的write方法
    node.eat("rice")  # 继承自PersonNode的方法
    node.write()      # WriterNode自身的方法
    
    # 4. 阻塞节点运行（否则节点创建后会立即退出）
    rclpy.spin(node)
    
    # 5. 收尾：销毁节点 + 关闭rclpy
    node.destroy_node()
    rclpy.shutdown()

# ROS2节点标准入口（确保脚本可直接运行/被ros2 run调用）
if __name__ == '__main__':
    main()
